Skip to content

Stop the memory audit deleting what it could not verify - #18

Merged
bguidolim merged 6 commits into
mainfrom
bruno/memory-skills-small-fixes
Aug 27, 2026
Merged

Stop the memory audit deleting what it could not verify#18
bguidolim merged 6 commits into
mainfrom
bruno/memory-skills-small-fixes

Conversation

@bguidolim

Copy link
Copy Markdown
Collaborator

Why

The audit could delete a memory describing code that still exists. An empty grep was treated as proof a symbol was gone, and two other instructions pushed the same way — the guideline to prefer DROP in doubt, and a DROP-category preamble that told the agent not to hedge while four of its own categories carry "keep only when" clauses. Where a knowledge base is gitignored or the project has no version control, that deletion cannot be undone.

Four places also assumed git log is always available to answer "why is this named X?". This pack installs into non-git projects, where nothing records that history and the memory may be its only trace.

Both skills additionally carried Swift-specific examples, which read as iOS-only in a pack that installs anywhere. Those are now language-neutral, and the retrospective's three-memory cap says why it exists rather than looking like it contradicts saving whatever passes the gates.

Deliberately small: no new files, no CI change, and no locked-block edits. An earlier attempt at this grew a symbol-history triage with its own verdict table, which was wrong in three consecutive review rounds — the fix here is to refuse the destructive verdict, not to compute a better one.

Test plan

  • Run the audit against a project whose memory names a symbol that no longer greps → expect it reported as unverifiable, not dropped, and read the prefer-DROP guideline alongside it to confirm the two no longer conflict.
  • Run it in a directory that is not a git repo → expect no verdict justified by version-control history.
  • Approve a batch containing a deletion → expect the file removed and nothing staged, committed, or pushed.
  • Run the drift script at the bottom of SYNC-BLOCKS.md → expect all three blocks identical; this change edits only text outside the fences.

- Replace Swift-specific examples (dropFirst, labeled parameters, .swift paths, protocol conformance) with language-neutral equivalents
- The pack installs into projects of any stack, so its examples should not read as iOS-only
- An empty grep was treated as proof a symbol never existed, so a memory about code on an unmerged branch got dropped — unrecoverable where the KB is gitignored or the project has no git
- Carve that out of the prefer-DROP guideline, which otherwise overrules it
- Four sites assumed git is always present, and the DROP preamble forbade the hedges its own categories require
- The skill claimed to save whatever passes the gates while also capping at three, so discarded candidates had no stated reason
- Gates decide eligibility, the cap decides how many land per session
- Every row restated the allowed-tools frontmatter or the body's own usage, down to "Read | Read a specific memory file"
- Nothing referenced the section
- "Report it as unverifiable" named no verdict the table accepts, so the surrounding prefer-DROP pressure would have decided it
- Points at Step 4's existing UPDATE-uncertain path instead of adding a fourth verdict
- Duplicate detection is Step 2's job, with a mandatory search and a three-way decision; brittle references are Staleness Prevention's, immediately below
- The checklist's own preamble no longer claims to cover staleness, since nothing in it does
@bguidolim
bguidolim merged commit d912256 into main Aug 27, 2026
1 check passed
@bguidolim
bguidolim deleted the bruno/memory-skills-small-fixes branch August 27, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant